package org.dlow.proxy;

import org.dlow.annotation.RpcReference;
import org.dlow.common.constants.FaultTolerant;
import org.dlow.common.constants.LoadBalance;

import java.util.concurrent.TimeUnit;

/**
 * 服务代理提供者接口
 * 负责为远程服务创建本地代理对象
 * 
 * @description: 服务代理提供者，用于生成远程服务的本地代理实例
 * @Author: 山沐与山
 * @CreateTime: 2024-05-10 19:20
 */
public interface ServiceProxyProvider {

    /**
     * 为指定服务接口创建代理对象
     * 
     * @param claz 服务接口类
     * @param rpcReference RPC引用配置
     * @param <T> 服务接口类型
     * @return 代理对象实例
     */
    <T> T createProxy(Class<T> claz, RpcReference rpcReference);
}
